package com.time;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Sl4jJclLogbackLog {

    private static final Logger logger = LoggerFactory.getLogger(Sl4jJclLogbackLog.class);

    /**
     * Slf4j的设计思想比较简洁，使用了Facade设计模式，Slf4j本身只提供了一个slf4j-api-version.jar包，这个jar中主要是日志的抽象接口，
     * jar中本身并没有对抽象出来的接口做实现。对于不同的日志实现方案(例如Logback，Log4j...)，封装出不同的桥接组件(例如logback-classic-version.jar，
     * slf4j-log4j12-version.jar)，这样使用过程中可以灵活的选取自己项目里的日志实现
     * <p>
     * 应用调了sl4j-api，即日志门面接口。日志门面接口本身通常并没有实际的日志输出能力，它底层还是需要去调用具体的日志框架API的，
     * 也就是实际上它需要跟具体的日志框架结合使用。由于具体日志框架比较多，而且互相也大都不兼容，日志门面接口要想实现与任意日志框架结合可能需要对应的桥接器！
     * <p>
     * Slf4j与其他各种日志组件的桥接说明
     * slf4j-log4j12-1.7.32.jarLog4j1.2版本的桥接器，你需要将Log4j.jar加入Classpath。
     * slf4j-jdk14-1.7.32.jarjava.util.logging的桥接器，Jdk原生日志框架。
     * slf4j-nop-1.7.32.jarNOP桥接器，默默丢弃一切日志。
     * slf4j-simple-1.7.32.jar一个简单实现的桥接器，该实现输出所有事件到System.err. 只有Info以及高于该级别的消息被打印，在小型应用中它也许是有用的。
     * slf4j-jcl-1.7.32.jarJakarta Commons Logging 的桥接器. 这个桥接器将Slf4j所有日志委派给Jcl。logback-classic-1.0.13.jar(requires
     * logback-core-1.0.13.jar)Slf4j的原生实现，Logback直接实现了Slf4j的接口，因此使用Slf4j与Logback的结合使用也意味更小的内存与计算开销
     */
    @Test
    public void test() {
        logger.info("使用sl4j-api和logback记录日志");
        logger.info("日志类：" + logger.getClass().getName());
    }
}
